<?php

require_once 'Banco.php';
require_once 'Model/Solicitacoes.php';
require_once 'DAO/DAORepublica.php';
require_once 'DAO/DAOUsuario.php';
require_once 'DAO/DAOUsuarioRepublica.php';
class DAOSolicitacoes extends Banco {

    function getSolicitacoes($codRepublica) {
        $solicitacoes = array();
        Banco::conecta();
        $banco = Banco::getBanco();
        if ($sql = $banco->prepare("SELECT SOL_CODUSUARIO, SOL_CODREPUBLICA, SOL_DATA, SOL_CONFIRMADO FROM TB_SOLICITACOES WHERE SOL_DATA IS NOT NULL AND SOL_CONFIRMADO='N' AND SOL_CODREPUBLICA = ?;")) {
            $sql->bind_param('i', $codRepublica);
            $sql->execute();
            $sql->bind_result($usuario, $republica, $data, $confirmado);
            while ($sql->fetch()) {
                $sol = new Solicitacoes();
                $du = new DAOUsuario();
                $dr = new DAORepublica();
                $sol->setConfirmado($confirmado);
                $sol->setData($data);
                $sol->setRepublica($dr->getRepublica($republica));
                $sol->setUsuario($du->getUsuario($usuario));
                $solicitacoes[] = (object)$sol;
            }
            $sql->close();
        }
        $banco->close();
        return $solicitacoes;
    }
    
    function usuarioSolicitou(Solicitacoes $solicitacao) {
        $usuario = null;
        $republica = null;
        if(is_a($solicitacao->getUsuario(), 'Usuario')){
            $usuario = $solicitacao->getUsuario()->getCodigo();
        }
        if(is_a($solicitacao->getRepublica(), 'Republica')){
            $republica = $solicitacao->getRepublica()->getCodigo();
        }
        Banco::conecta();
        $banco = Banco::getBanco();
        if ($sql = $banco->prepare("SELECT SOL_CODUSUARIO, SOL_CODREPUBLICA, SOL_DATA, SOL_CONFIRMADO FROM TB_SOLICITACOES WHERE SOL_DATA IS NOT NULL AND SOL_CODUSUARIO=? AND SOL_CODREPUBLICA = ?;")) {
            $sql->bind_param('ii', $usuario, $republica);
            $sql->execute();
            $sql->bind_result($usuario, $republica, $data, $confirmado);
            while ($sql->fetch()) {
                return true;
            }
            $sql->close();
        }
        $banco->close();
        return false;
    }
    
    function addSolicitacao(Solicitacoes $solicitacao) {
        $usuario = null;
        $republica = null;
        if(is_a($solicitacao->getUsuario(), 'Usuario')){
            $usuario = $solicitacao->getUsuario()->getCodigo();
        }
        if(is_a($solicitacao->getRepublica(), 'Republica')){
            $republica = $solicitacao->getRepublica()->getCodigo();
        }
        Banco::conecta();
        $banco = Banco::getBanco();
        if ($sql = $banco->prepare("INSERT INTO TB_SOLICITACOES VALUES (?, ?, NOW(), DEFAULT);")) {
            $sql->bind_param('ii', $usuario, $republica);
            $sql->execute();
            $sql->close();
        }
        if ($sql = $banco->prepare("UPDATE TB_SOLICITACOES SET SOL_DATA=NOW() WHERE SOL_CODUSUARIO=? AND SOL_CODREPUBLICA=?;")) {
            $sql->bind_param('ii', $usuario, $republica);
            $sql->execute();
            $sql->close();
        }
        $banco->close();
    }
    
    function removeSolicitacao(Solicitacoes $solicitacao) {
        $usuario = null;
        $republica = null;
        if(is_a($solicitacao->getUsuario(), 'Usuario')){
            $usuario = $solicitacao->getUsuario()->getCodigo();
        }
        if(is_a($solicitacao->getRepublica(), 'Republica')){
            $republica = $solicitacao->getRepublica()->getCodigo();
        }
        Banco::conecta();
        $banco = Banco::getBanco();
        if ($sql = $banco->prepare("UPDATE TB_SOLICITACOES SET SOL_DATA=NULL WHERE SOL_CODUSUARIO=? AND SOL_CODREPUBLICA=?;")) {
            $sql->bind_param('ii', $usuario, $republica);
            $sql->execute();
            $sql->close();
        }
        $banco->close();
    }
    
    function aceitaSolicitacao(Solicitacoes $solicitacao) {
        $usuario = null;
        $republica = null;
        if(is_a($solicitacao->getUsuario(), 'Usuario')){
            $usuario = $solicitacao->getUsuario()->getCodigo();
        }
        if(is_a($solicitacao->getRepublica(), 'Republica')){
            $republica = $solicitacao->getRepublica()->getCodigo();
        }
        Banco::conecta();
        $banco = Banco::getBanco();
        if ($sql = $banco->prepare("UPDATE TB_SOLICITACOES SET SOL_CONFIRMADO='S' WHERE SOL_CODUSUARIO=? AND SOL_CODREPUBLICA=?;")) {
            $sql->bind_param('ii', $usuario, $republica);
            $sql->execute();
            $sql->close();
        }
        $dur = new DAOUsuarioRepublica();
        $usuarioRepublica= new UsuarioRepublica();
        $usuarioRepublica->setPrincipal('N');
        $usuarioRepublica->setRepublica($solicitacao->getRepublica());
        $usuarioRepublica->setUsuario($solicitacao->getUsuario());
        $dur->addUsuarioRepublica($usuarioRepublica);
        $banco->close();
    }
    
    

}

?>
